﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Text.Json;
using System.IO;
using Microsoft.Graph.Models;

namespace Zhaoxi.Industrial.DAL
{
    internal class JsonTool
    {
        public static string GetKeyCode(string key) {

            string assemblyPath = System.Reflection.Assembly.GetExecutingAssembly().Location;//反射获取程序集位置
            string parentDirectory = Directory.GetParent(assemblyPath).Parent.Parent.Parent.FullName;//拿到根路径
            string jsonfile = "appsettings.json";
            parentDirectory = Path.Combine(parentDirectory, jsonfile);//拼接文件
          
            string jsonstring = File.ReadAllText(parentDirectory);//读取json文件格式

            using (JsonDocument doc = JsonDocument.Parse(jsonstring)) 
            {
                JsonElement root = doc.RootElement;
                return (GetValueRecursively(root, key));

            }
        }


        public static string GetValueRecursively(JsonElement root, string key) {
            //是对象的情况
            if (root.ValueKind == JsonValueKind.Object)
            {
                foreach (JsonProperty item in root.EnumerateObject())
                {
                    if (item.NameEquals(key))
                    {
                        //如果返回值的不是object或者数组的话，那就返回字符串，反之返回序列化后的json
                        if (item.Value.ValueKind != JsonValueKind.Object && item.Value.ValueKind != JsonValueKind.Array)
                        {
                            return item.Value.ToString();
                        }
                        else
                        {
                            return JsonSerializer.Serialize(item.Value);
                        }
                    }
                    //递归遍历Value的值，看看是否还是对象，不是的话就返回
                    string nestedValue = GetValueRecursively(item.Value, key);
                    if (!string.IsNullOrEmpty(nestedValue))
                    {
                        return nestedValue;
                    }
                }
            }

            // 如果是数组，遍历数组中的每个元素
            //else if (element.ValueKind == JsonValueKind.Array)
            //{
            //    foreach (var item in element.EnumerateArray())
            //    {
            //        // 递归搜索数组中的每个对象
            //        string nestedValue = GetValueRecursively(item, key);
            //        if (!string.IsNullOrEmpty(nestedValue))
            //        {
            //            return nestedValue;
            //        }
            //    }
            //}
            return string.Empty;
        }
    }
}
